var webpack = require('webpack');
const ExtractTextPlugin = require("extract-text-webpack-plugin"); // 独立打包css的插件
var HtmlWebpackPlugin = require('html-webpack-plugin'); // 自动生成html模板的插件,同事将output打包出的js文件，全部引用进来

// 环境变量的配置 dev / online
var WEBPACK_ENV = process.env.WEBPACK_ENV || 'dev'; // node的属性

// 一个HtmlWebpackPlugin的配置文件
var getHtmlConfig = function(name) {
    return {
        template: './src/view/' + name + '.html', //要加载的入口文件
        filename: 'view/' + name + '.html',
        inject: true,
        hash: true,
        chunks: ['common', name]
    }
}

var config = {
    entry: { // 多入口文件是一个对象
        'common': ['./src/page/common/index.js'],
        'index': ['./src/page/index/index.js'],
        'login': ['./src/page/login/index.js'],
        'result': ['./src/page/result/index.js']
    },
    output: { // [name]代表打包的文件以入口文件的“key”值 来命名
        path: './dist', // 生成文件的目录
        publicPath: '/dist',
        filename: 'js/[name].js'
    },
    externals: { // 将外部第三方库，当做模块引入进来
        'jquery': 'window.jQuery'
    },
    module: {
        loaders: [{
            test: /\.css$/,
            loader: ExtractTextPlugin.extract("style-loader", "css-loader")
        }, {
            test: /\.(gif|png|jpg|svg|eot|ttf|woff)\??.*$/,
            loader: 'url-loader?limit=100&name=resource/[name].[ext]'
        }, {
            test: /\.string$/,
            loader: 'html-loader'
        }]
    },
    resolve: { // 配置文件路径
        alias: {
            util: __dirname + '/src/util',
            page: __dirname + '/src/page',
            service: __dirname + '/src/service',
            image: __dirname + '/src/image',
            node_modules: __dirname + '/node_modules',
        }
    },
    plugins: [
        // 把独立通用文件加载到 js/base.js
        new webpack.optimize.CommonsChunkPlugin({
            name: 'common',
            filename: 'js/base.js'
        }),
        new ExtractTextPlugin("/css/[name].css"), // 以入口的文件名来打包出对应的css文件
        // html模板的处理
        new HtmlWebpackPlugin(getHtmlConfig('index')),
        new HtmlWebpackPlugin(getHtmlConfig('login')),
        new HtmlWebpackPlugin(getHtmlConfig('result')),
    ]
};

if (WEBPACK_ENV === 'dev') {
    config.entry.common.push('webpack-dev-server/client?http://localhost:8088/'); // 目的在开发环境下，将这个地址放到入口文件中
}

module.exports = config;